//***************************************************************************
//  NARS2000 -- Syntax Object Header
//***************************************************************************

/***************************************************************************
    NARS2000 -- An Experimental APL Interpreter
    Copyright (C) 2006-2014 Sudley Place Software

    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.
***************************************************************************/


// DO NOT EDIT THIS FILE
// It is automatically generated by the APL function <synobj>
//   in J:\workspaces\2by2.ws.nars.  Instead, edit and run the APL function.

#ifdef DEFINE_VARS
  #define EXTERN
#else
  #define EXTERN extern
#endif

// Syntax Objects enum
typedef enum tagSO_ENUM
{
	soUNK = 0, 			// 00:  Unknown                                                
	soA      , 			// 01:  Array                                                  
	soMF     , 			// 02:  Monadic (primitive, user-defined, train, etc.) function
	soF      , 			// 03:  Ambivalent function                                    
	soNF     , 			// 04:  Niladic function                                       
	soMOP    , 			// 05:  Monadic operator                                       
	soDOP    , 			// 06:  Dyadic operator                                        
	soMOPN   , 			// 07:  Monadic operator, niladic derived function             
	soDOPN   , 			// 08:  Dyadic operator, ...                                   
	soIDX    , 			// 09:  Indexing []                                            
	soSP     , 			// 0A:  Assignment/Sink                                        
	soGO     , 			// 0B:  Goto                                                   
	soJ      , 			// 0C:  Jot                                                    
	soJD     , 			// 0D:  Jot Dot                                                
	soLP     , 			// 0E:  Left paren                                             
	soRP     , 			// 0F:  Right paren                                            
	soLBK    , 			// 10:  Left bracket                                           
	soSEMI   , 			// 11:  Semicolon                                              
	soRBK    , 			// 12:  Right bracket                                          
	soHY     , 			// 13:  Hybrid:  /\ and barred forms                           
	soSPA    , 			// 14:  {is} A                                                 
	soSPF    , 			// 15:  {is} F                                                 
	soSPM    , 			// 16:  {is} MOP                                               
	soSPD    , 			// 17:  {is} DOP                                               
	soSPHY   , 			// 18:  {is} HY                                                
	soSPNF   , 			// 19:  {is} NF                                                
	soSPFR   , 			// 1A:  {is} FR                                                
	soSPMR   , 			// 1B:  {is} MR                                                
	soSPDR   , 			// 1C:  {is} DR                                                
	soSPHR   , 			// 1D:  {is} HR                                                
	soSPMN   , 			// 1E:  {is} MOPN                                              
	soSPDN   , 			// 1F:  {is} DOPN                                              
	soFF     , 			// 20:  F F   - Trains                                         
	soFR     , 			// 21:  F)    - ...                                            
	soMR     , 			// 22:  MOP)  - ...                                            
	soDR     , 			// 23:  DOP)  - ...                                            
	soHR     , 			// 24:  HY)   - ...                                            
	soFFR    , 			// 25:  F F)  - ...                                            
	soAFR    , 			// 26:  A F)  - ...                                            
	soNAM    , 			// 27:  Name                                                   
	soSA     , 			// 28:  Strand                                                 
	soLBC    , 			// 29:  Left brace                                             
	soRBC    , 			// 2A:  Right brace                                            
	soCSF    , 			// 2B:  :FOR/:FORLCL                                           
	soCSI    , 			// 2C:  :IN                                                    
	soCSIA   , 			// 2D:  :IN A                                                  
	soCSFN   , 			// 2E:  :FOR NAM/:FORLCL NAM                                   
	soCSEF   , 			// 2F:  :ENDFOR/:ENDFORLCL                                     
	soCS0    , 			// 30:  CS Niladic                                             
	soCS1    , 			// 31:  CS Monadic                                             
	soSOS    , 			// 32:  Start of stmt                                          
	soAFOG   , 			// 33:  AFO Guard                                              
	soAFOR   , 			// 34:  AFO Return                                             
	soSYSN   , 			// 35:  System Namespace                                       
	soARBK   , 			// 36:  A RBR                                                  
	soSRBK   , 			// 37:  ; RBR/RBR2                                             
	soIO     , 			// 38:  I/O                                                    
	soNR     , 			// 39:  NAM)                                                   
	soNNR    , 			// 3A:  NAM NAM)                                               
	soLNR    , 			// 3B:  (NAM NAM)                                              
	soISPA   , 			// 3C:  IDX SPA                                                
	soSYNR   , 			// 3D:  SYNTAX ERROR                                           
	soVALR   , 			// 3E:  VALUE ERROR                                            
	soNVAL   , 			// 3F:  No Value                                               
	soEOS    , 			// 40:  *MUST* be the highest numbered entry                   
	soNONE = 999,		//999:  Filler for no entry
} SO_ENUM, *LPSO_ENUM;

#define soLAST		soEOS

#ifdef DEBUG
// Syntax Object Names
EXTERN
LPWCHAR soNames[]
#ifdef DEFINE_VALUES
= {
	L"UNK" ,			// 00:  Unknown                                                
	L"A"   ,			// 01:  Array                                                  
	L"MF"  ,			// 02:  Monadic (primitive, user-defined, train, etc.) function
	L"F"   ,			// 03:  Ambivalent function                                    
	L"NF"  ,			// 04:  Niladic function                                       
	L"MOP" ,			// 05:  Monadic operator                                       
	L"DOP" ,			// 06:  Dyadic operator                                        
	L"MOPN",			// 07:  Monadic operator, niladic derived function             
	L"DOPN",			// 08:  Dyadic operator, ...                                   
	L"IDX" ,			// 09:  Indexing []                                            
	L"SP"  ,			// 0A:  Assignment/Sink                                        
	L"GO"  ,			// 0B:  Goto                                                   
	L"J"   ,			// 0C:  Jot                                                    
	L"JD"  ,			// 0D:  Jot Dot                                                
	L"("   ,			// 0E:  Left paren                                             
	L")"   ,			// 0F:  Right paren                                            
	L"["   ,			// 10:  Left bracket                                           
	L";"   ,			// 11:  Semicolon                                              
	L"]"   ,			// 12:  Right bracket                                          
	L"HY"  ,			// 13:  Hybrid:  /\ and barred forms                           
	L"SPA" ,			// 14:  {is} A                                                 
	L"SPF" ,			// 15:  {is} F                                                 
	L"SPM" ,			// 16:  {is} MOP                                               
	L"SPD" ,			// 17:  {is} DOP                                               
	L"SPHY",			// 18:  {is} HY                                                
	L"SPNF",			// 19:  {is} NF                                                
	L"SPFR",			// 1A:  {is} FR                                                
	L"SPMR",			// 1B:  {is} MR                                                
	L"SPDR",			// 1C:  {is} DR                                                
	L"SPHR",			// 1D:  {is} HR                                                
	L"SPMN",			// 1E:  {is} MOPN                                              
	L"SPDN",			// 1F:  {is} DOPN                                              
	L"FF"  ,			// 20:  F F   - Trains                                         
	L"FR"  ,			// 21:  F)    - ...                                            
	L"MR"  ,			// 22:  MOP)  - ...                                            
	L"DR"  ,			// 23:  DOP)  - ...                                            
	L"HR"  ,			// 24:  HY)   - ...                                            
	L"FFR" ,			// 25:  F F)  - ...                                            
	L"AFR" ,			// 26:  A F)  - ...                                            
	L"NAM" ,			// 27:  Name                                                   
	L"SA"  ,			// 28:  Strand                                                 
	L"{"   ,			// 29:  Left brace                                             
	L"}"   ,			// 2A:  Right brace                                            
	L"CSF" ,			// 2B:  :FOR/:FORLCL                                           
	L"CSI" ,			// 2C:  :IN                                                    
	L"CSIA",			// 2D:  :IN A                                                  
	L"CSFN",			// 2E:  :FOR NAM/:FORLCL NAM                                   
	L"CSEF",			// 2F:  :ENDFOR/:ENDFORLCL                                     
	L"CS0" ,			// 30:  CS Niladic                                             
	L"CS1" ,			// 31:  CS Monadic                                             
	L"SOS" ,			// 32:  Start of stmt                                          
	L"AFOG",			// 33:  AFO Guard                                              
	L"AFOR",			// 34:  AFO Return                                             
	L"SYSN",			// 35:  System Namespace                                       
	L"ARBK",			// 36:  A RBR                                                  
	L"SRBK",			// 37:  ; RBR/RBR2                                             
	L"IO"  ,			// 38:  I/O                                                    
	L"NR"  ,			// 39:  NAM)                                                   
	L"NNR" ,			// 3A:  NAM NAM)                                               
	L"LNR" ,			// 3B:  (NAM NAM)                                              
	L"ISPA",			// 3C:  IDX SPA                                                
	L"SYNR",			// 3D:  SYNTAX ERROR                                           
	L"VALR",			// 3E:  VALUE ERROR                                            
	L"NVAL",			// 3F:  No Value                                               
	L"EOS" ,			// 40:  *MUST* be the highest numbered entry                   
  }
#endif
;
#endif

#undef  EXTERN

#define SONAMES_MAXLEN	5


//***************************************************************************
//  End of File: synobj.h
//***************************************************************************
